/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao.addxuonghibernate;

import java.util.Date;
import java.util.List;
import model.dao.AbstractQuery;
import model.dao.ProjectQuery;
import model.dao.benhan.BenhAnDAO;
import model.entity.Admin;
import model.entity.BacSi;
import model.entity.Benh;
import model.entity.BenhAn;
import model.entity.ChungLoai;
import model.entity.KhachHang;
import model.entity.Loai;
import model.entity.PhieuDieuTri;
import model.entity.VatNuoi;
import model.util.HibernateUtil;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author Admin
 */
public class PhieuDieuTriDAO {
    private static String LOAD_ALL_PDT_THEO_MA_HSBA = "FROM PhieuDieuTri AS phieuDieuTri WHERE BA_Ma =";
    
    public static final int insertPhieuDieuTri(PhieuDieuTri pdt){

        Session session = HibernateUtil.getSessionFactory().openSession();
        int id;
        try {
            //Câu này để chạy lệnh add xuong csdl
            //BenhAnDAO.insertBenhAn(pdt.getBenhAn());
            session.beginTransaction();
            session.save(pdt);
            session.getTransaction().commit();
            id = pdt.getPdtMa();
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            throw new HibernateException(e);
        }finally{
            session.close();
        }
        return id;
    } 
     public static final void updatePhieuDieuTri(PhieuDieuTri pdt) {
        AbstractQuery.updateObject(pdt);
    }
    
    /**
     * Load Phiếu Điều Trị Theo Hồ Sơ Bệnh án
     * @param args 
     */
    
    public static final  List<PhieuDieuTri> timPhieuDieuTriTheoMaHSBA(int maBA){
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        
        List<PhieuDieuTri> list = session.createQuery(LOAD_ALL_PDT_THEO_MA_HSBA +"'" + maBA + "'").list();
        for (PhieuDieuTri phieuDieuTri : list) {
            Hibernate.initialize(phieuDieuTri.getBenhAn());
        }
        return list;
        
    }
    
    public static final boolean themPhieuDieuTri(int maPDT, Date ngayDieuTri, Date ngayTaiKham){
        PhieuDieuTri pdt = new PhieuDieuTri();
//        Benh benh = new Benh();
//        benh.setBenhTen(tenBenh);
//        BenhAn ba = new BenhAn();
//        ba.setBenh(benh);
        
        pdt.setPdtMa(maPDT);
        pdt.setPdtNgayDieuTri(ngayDieuTri);
        pdt.setPdtNgayTaiKham(ngayTaiKham);
//        pdt.setBenhAn(ba);
        
        insertPhieuDieuTri(pdt);
        return true;
    }
    
    /**
     * Sửa PDt
     * @param args 
     */
    
     public static final boolean suaPhieuDieuTri(int maPDT, Date ngayDieuTri, Date ngayTaiKham){
        PhieuDieuTri pdt = new PhieuDieuTri();
        
        pdt.setPdtMa(maPDT);
        pdt.setPdtNgayDieuTri(ngayDieuTri);
        pdt.setPdtNgayTaiKham(ngayTaiKham);
//        pdt.setBenhAn(ba);
        
        updatePhieuDieuTri(pdt);
        return true;
    }
    public static void main(String[] args){
//        Admin ad = new Admin("Hồ", "Mai", "Nam", "Tây Ninh", new Date("12/06/1991"), "09665536", null);
//         BacSi bs = new BacSi(ad, "Nguyễn", "Mạnh", "Tiến", "Tây Ninh", new Date("12/09/1990"), "0976535", "Nông Lâm", "Giỏi", null);
//         KhachHang kh = new KhachHang(bs, "Văn", "Thị Mai", "Nữ", new Date("8/09/1991"), "Vũng Tàu", "087543", "Là Người Kinh Doanh", null);
//         
//         Loai loai = new Loai("Chó", "Chó xù", null);
//         ChungLoai cloai = new ChungLoai(loai, "Chó Bệc giê", "Chó Xù", null);
//         VatNuoi vnuoi = new VatNuoi(cloai, kh, "GâuGâu", "5", "Đực", null, null);
//         
//         Benh benh = new Benh("Bọ chét", "Có vài con trên người", null, null);
//         
//         BenhAn benhAn = new BenhAn(benh, vnuoi, "Bệnh vừa",new Date("10/04/2014") , new Date("12/05/2014"), "còn Bệnh", null);
//         PhieuDieuTri pdt = new PhieuDieuTri(benhAn, new Date("12/09/2014"), new Date("18/09/2014"), null);
//         
//         PhieuDieuTriDAO.insertPhieuDieuTri(pdt);

}
    
    private static String LOAD_BY_ID = "FROM PhieuDieuTri AS pdt WHERE pdt.pdtMa =";
   public static  void deletePDT(int giaMa){
        AbstractQuery.modifyObject(3, AbstractQuery.loadObject(LOAD_BY_ID + giaMa).get(0));
    }
}
